home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2007 December
/
PCWKCD1207B.iso
/
Blogowanie poza sfera
/
Flock 1.0 beta
/
flock-1.0RC3.en-US.win32.exe
/
flock
/
components
/
flockShelfService.js
< prev
next >
Wrap
Text File
|
2007-10-18
|
5KB
|
197 lines
// BEGIN FLOCK GPL
//
// Copyright Flock Inc. 2005-2007
// http://flock.com
//
// This file may be used under the terms of of the
// GNU General Public License Version 2 or later (the "GPL"),
// http://www.gnu.org/licenses/gpl.html
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
//
// END FLOCK GPL
const CC = Components.classes;
const CI = Components.interfaces;
const CU = Components.utils;
CU.import("resource:///modules/FlockXPCOMUtils.jsm");
const FLOCK_SHELF_CLASS_NAME = "Flock Shelf Service";
const FLOCK_SHELF_CLASS_ID =
Components.ID("{ee266aa8-bc64-4e6a-9a20-1143b0444fbd}");
const FLOCK_SHELF_CONTRACTID =
"@mozilla.org/rdf/datasource;1?name=flock-shelf";
const FLOCK_NS = "http://flock.com/rdf#";
const FLOCK_SHELF_ROOT = "urn:flock:shelfroot";
function flockShelfService() {
this._coop = CC["@flock.com/singleton;1"]
.getService(CI.flockISingleton)
.getSingleton("chrome://flock/content/common/load-faves-coop.js")
.wrappedJSObject;
this.shelfRoot = this._coop.get(FLOCK_SHELF_ROOT);
if (!this.shelfRoot) {
this.shelfRoot = new this._coop.Folder(FLOCK_SHELF_ROOT);
this._coop.favorites_root.children.add(this.shelfRoot);
}
}
flockShelfService.prototype = new FlockXPCOMUtils.genericComponent(
FLOCK_SHELF_CLASS_NAME,
FLOCK_SHELF_CLASS_ID,
FLOCK_SHELF_CONTRACTID,
flockShelfService,
CI.nsIClassInfo.SINGLETON,
[CI.flockIShelfService]
);
// Shelf Interface Implementation
flockShelfService.prototype.elementsCount =
function SHELF_elementsCount() {
return this._getChildCount(this.shelfRoot);
}
flockShelfService.prototype.insert =
function SHELF_insert(aTitle, aContent, aUrl, aType, aPos, aParent) {
var date = new Date();
var id = FLOCK_SHELF_ROOT
+ ":obj_" + date.getTime()
+ ":" + Math.round(100 * Math.random());
var item = new this._coop.WebSnippet(id,
{
content: aContent,
name: aTitle,
creationDate: date,
URL: aUrl,
snippetType: aType
});
var parentNode = aParent ? this._coop.get(aParent) : this.shelfRoot;
if (aPos < 0) {
parentNode.children.add(item);
} else {
parentNode.children.insertAt(item, aPos);
}
this._refreshCount(parentNode);
return id;
}
flockShelfService.prototype.createFolder =
function SHELF_createFolder(aName) {
var id = FLOCK_SHELF_ROOT + ":folder:" + aName;
var folder = new this._coop.Folder(id, { name: aName });
this.shelfRoot.children.add(folder);
return id;
}
flockShelfService.prototype.moveTo =
function SHELF_moveTo(aId, aFolder) {
var folderId = FLOCK_SHELF_ROOT + ":folder:" + aFolder;
var item = this._coop.get(aId);
if (!item) {
debug("*** ERROR: Can't find "+aId+"\n");
return;
}
var folder = this._coop.get(folderId);
if (!folder) {
this.createFolder(aFolder);
folder = this._coop.get(folderId);
}
if (folder.children.indexOf(item) > 0) {
// Already in the folder
return;
}
var parent = item.getParent();
parent.children.remove(item);
folder.children.add(item);
this._refreshCount(parent);
this._refreshCount(folder);
}
flockShelfService.prototype.changeAttribute =
function SHELF_changeAttribute(aUrn, aAttribute, aValue){
var snippet = this._coop.get(aUrn);
snippet[aAttribute] = aValue;
}
flockShelfService.prototype.getPositionOf =
function SHELF_getPositionOf(aUrn) {
var snippet = this._coop.get(aUrn);
var parent = snippet.getParent();
return parent.children.indexOf(snippet);
}
flockShelfService.prototype.getTargetOf =
function SHELF_getTargetOf(aUrn, aTarget) {
var snippet = this._coop.get(aUrn);
return (snippet ? snippet[aTarget] : null);
}
flockShelfService.prototype.remove =
function SHELF_remove(aUrn) {
var snippet = this._coop.get(aUrn);
var parent = snippet.getParent();
parent.children.remove(snippet);
this._refreshCount(parent);
snippet.destroy();
}
flockShelfService.prototype.clear =
function SHELF_clear() {
var children = this.shelfRoot.children.enumerate();
var elts = [];
while (children.hasMoreElements()) {
elts.push(children.getNext());
}
while (elts.length > 0) {
var elt = elts.pop();
this.shelfRoot.children.remove(elt);
elt.destroy();
}
}
flockShelfService.prototype._getChildCount =
function SHELF__getChildCount(obj) {
var count = 0;
var children = obj.children.enumerate();
while (children.hasMoreElements()) {
children.getNext();
count++;
}
return count;
}
flockShelfService.prototype._refreshCount =
function SHELF__refreshCount(aFolder) {
if (!aFolder.children) {
return;
}
aFolder.count = this._getChildCount(aFolder);
}
var NSGetModule = FlockXPCOMUtils.generateNSGetModule(FLOCK_SHELF_CLASS_NAME,
[flockShelfService]);